/*
 * Copyright (c) 2019 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */
/* CAMERA GPIO standardization */
&pio {
	camera0_mclk_2mA: camera0_mclk_2mA@gpio100 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO100__FUNC_CMMCLK1>;
			drive-strength = <MTK_DRIVE_2mA>;
		};
	};
	camera0_mclk_4mA: camera0_mclk_4mA@gpio100 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO100__FUNC_CMMCLK1>;
			drive-strength = <MTK_DRIVE_4mA>;
		};
	};
	camera0_mclk_6mA: camera0_mclk_6mA@gpio100 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO100__FUNC_CMMCLK1>;
			drive-strength = <MTK_DRIVE_6mA>;
		};
	};
	camera0_mclk_8mA: camera0_mclk_8mA@gpio100 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO100__FUNC_CMMCLK1>;
			drive-strength = <7>;
		};
	};
	camera0_mclk_off: camera0_mclk_gpio_mode@gpio100 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO100__FUNC_GPIO100>;
			drive-strength = <MTK_DRIVE_4mA>;
		};
	};
	camera1_mclk_2mA: camera1_mclk_2mA@gpio99 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO99__FUNC_CMMCLK0>;
			drive-strength = <MTK_DRIVE_2mA>;
		};
	};
	camera1_mclk_4mA: camera1_mclk_4mA@gpio99 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO99__FUNC_CMMCLK0>;
			drive-strength = <MTK_DRIVE_4mA>;
		};
	};
	camera1_mclk_6mA: camera1_mclk_6mA@gpio99 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO99__FUNC_CMMCLK0>;
			drive-strength = <MTK_DRIVE_6mA>;
		};
	};
	camera1_mclk_8mA: camera1_mclk_8mA@gpio99 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO99__FUNC_CMMCLK0>;
			drive-strength = <7>;
		};
	};
	camera1_mclk_off: camera1_mclk_gpio_mode@gpio99 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO99__FUNC_GPIO99>;
			drive-strength = <MTK_DRIVE_4mA>;
		};
	};
	camera2_mclk_2mA: camera2_mclk_2mA@gpio111 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO111__FUNC_CMMCLK3>;
			drive-strength = <MTK_DRIVE_2mA>;
		};
	};
	camera2_mclk_4mA: camera2_mclk_4mA@gpio111 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO111__FUNC_CMMCLK3>;
			drive-strength = <MTK_DRIVE_4mA>;
		};
	};
	camera2_mclk_6mA: camera2_mclk_6mA@gpio111 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO111__FUNC_CMMCLK3>;
			drive-strength = <MTK_DRIVE_6mA>;
		};
	};
	camera2_mclk_8mA: camera2_mclk_8mA@gpio111 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO111__FUNC_CMMCLK3>;
			drive-strength = <7>;
		};
	};
	camera2_mclk_off: camera2_mclk_gpio_mode@gpio111 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO111__FUNC_GPIO111>;
			drive-strength = <MTK_DRIVE_4mA>;
		};
	};
	camera0_rst_low: camera0_rst_output_low@gpio102 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO102__FUNC_GPIO102>;
			output-low;
		};
	};
	camera0_rst_high: camera0_rst_output_high@gpio102 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO102__FUNC_GPIO102>;
			output-high;
		};
	};
	camera0_pdn_low: camera0_pdn_output_low@gpio98 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO98__FUNC_GPIO98>;
			output-low;
		};
	};
	camera0_pdn_high: camera0_pdn_output_high@gpio98 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO98__FUNC_GPIO98>;
			output-high;
		};
	};
	camera1_rst_low: camera1_rst_output_low@gpio101 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO101__FUNC_GPIO101>;
			output-low;
		};
	};
	camera1_rst_high: camera1_rst_output_high@gpio101 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO101__FUNC_GPIO101>;
			output-high;
		};
	};
	camera1_pdn_low: camera1_pdn_output_low@gpio97 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO97__FUNC_GPIO97>;
			slew-rate = <1>;
			output-low;
		};
	};
	camera1_pdn_high: camera1_pdn_output_high@gpio97 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO97__FUNC_GPIO97>;
			output-high;
		};
	};
	camera2_rst_low: camera2_rst_output_low@gpio109 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO109__FUNC_GPIO109>;
			output-low;
		};
	};
	camera2_rst_high: camera2_rst_output_high@gpio109 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO109__FUNC_GPIO109>;
			output-high;
		};
	};
	camera2_pdn_low: camera2_pdn_output_low@gpio110 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO110__FUNC_GPIO110>;
			output-low;
		};
	};
	camera2_pdn_high: camera2_pdn_output_high@gpio110 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO110__FUNC_GPIO110>;
			output-high;
		};
	};
	camera0_vcamd_off: camera0_vcamd_output_low@gpio178 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO178__FUNC_GPIO178>;
			output-low;
		};
	};
	camera0_vcamd_on: camera0_vcamd_output_high@gpio178 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO178__FUNC_GPIO178>;
			output-high;
		};
	};
	camera1_vcamd_off: camera1_vcamd_output_low@gpio179 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO179__FUNC_GPIO179>;
			output-low;
		};
	};
	camera1_vcamd_on: camera1_vcamd_output_high@gpio179 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO179__FUNC_GPIO179>;
			output-high;
		};
	};
	camera2_vcama_off: camera2_vcama_output_low@gpio107 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO107__FUNC_GPIO107>;
			output-low;
		};
	};
	camera2_vcama_on: camera2_vcama_output_high@gpio107 {
		pins_cmd_dat {
			pinmux = <PINMUX_GPIO107__FUNC_GPIO107>;
			output-high;
		};
	};
	camera_pins_default: camdefault {
	};

};

&kd_camera_hw1 {
	pinctrl-names = "default",
			"cam0_rst0", "cam0_rst1",
			"cam0_pnd0", "cam0_pnd1",
			"cam1_rst0", "cam1_rst1",
			"cam1_pnd0", "cam1_pnd1",
			"cam2_rst0", "cam2_rst1",
			"cam2_pnd0", "cam2_pnd1",
			"cam0_vcamd_on",
			"cam0_vcamd_off",
			"cam1_vcamd_on",
			"cam1_vcamd_off",
			"cam2_vcama_on",
			"cam2_vcama_off",
			"cam0_mclk_off",
			"cam0_mclk_2mA", "cam0_mclk_4mA",
			"cam0_mclk_6mA", "cam0_mclk_8mA",
			"cam1_mclk_off",
			"cam1_mclk_2mA", "cam1_mclk_4mA",
			"cam1_mclk_6mA", "cam1_mclk_8mA",
			"cam2_mclk_off",
			"cam2_mclk_2mA", "cam2_mclk_4mA",
			"cam2_mclk_6mA", "cam2_mclk_8mA";

	pinctrl-0 = <&camera_pins_default>;
	pinctrl-1 = <&camera0_rst_low>;
	pinctrl-2 = <&camera0_rst_high>;
	pinctrl-3 = <&camera0_pdn_low>;
	pinctrl-4 = <&camera0_pdn_high>;
	pinctrl-5 = <&camera1_rst_low>;
	pinctrl-6 = <&camera1_rst_high>;
	pinctrl-7 = <&camera1_pdn_low>;
	pinctrl-8 = <&camera1_pdn_high>;
	pinctrl-9 = <&camera2_rst_low>;
	pinctrl-10 = <&camera2_rst_high>;
	pinctrl-11 = <&camera2_pdn_low>;
	pinctrl-12 = <&camera2_pdn_high>;
	pinctrl-13 = <&camera0_vcamd_on>;
	pinctrl-14 = <&camera0_vcamd_off>;
	pinctrl-15 = <&camera1_vcamd_on>;
	pinctrl-16 = <&camera1_vcamd_off>;
	pinctrl-17 = <&camera2_vcama_on>;
	pinctrl-18 = <&camera2_vcama_off>;
	pinctrl-19 = <&camera0_mclk_off>;
	pinctrl-20 = <&camera0_mclk_2mA>;
	pinctrl-21 = <&camera0_mclk_4mA>;
	pinctrl-22 = <&camera0_mclk_6mA>;
	pinctrl-23 = <&camera0_mclk_8mA>;
	pinctrl-24 = <&camera1_mclk_off>;
	pinctrl-25 = <&camera1_mclk_2mA>;
	pinctrl-26 = <&camera1_mclk_4mA>;
	pinctrl-27 = <&camera1_mclk_6mA>;
	pinctrl-28 = <&camera1_mclk_8mA>;
	pinctrl-29 = <&camera2_mclk_off>;
	pinctrl-30 = <&camera2_mclk_2mA>;
	pinctrl-31 = <&camera2_mclk_4mA>;
	pinctrl-32 = <&camera2_mclk_6mA>;
	pinctrl-33 = <&camera2_mclk_8mA>;

	cam0_vcama-supply = <&mt_pmic_vcama1_ldo_reg>;
	cam1_vcama-supply = <&mt_pmic_vcama2_ldo_reg>;
	cam2_vcamd-supply = <&mt_pmic_vcamd_ldo_reg>;
	cam0_vcamio-supply = <&mt_pmic_vcamio_ldo_reg>;
	cam1_vcamio-supply = <&mt_pmic_vcamio_ldo_reg>;
	cam2_vcamio-supply = <&mt_pmic_vcamio_ldo_reg>;
	status = "okay";

};
/* CAMERA GPIO end */
